home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Acorn RISC PD-CD 1
/
Acorn RISC PD-CD 1.iso
/
languages
/
dde
/
_pc
/
h
/
alarm
< prev
next >
Wrap
Text File
|
1992-02-09
|
5KB
|
142 lines
(*
* Title: alarm.h
* Purpose: alarm facilities for wimp programs, using non-busy waiting
*
*)
#ifndef __alarm_h
#define __alarm_h
type alarm_handler = ^procedure handler(called_at : integer;
handle : pointer);
(* ----------------------------- alarm_init --------------------------------
* Description: Initialise the alarm system.
*
* Parameters: void
* Returns: void.
* Other Info: If this call is made more than once, then any pending
* alarms are cancelled.
*
*)
procedure alarm_init; extern;
(* ----------------------------- alarm_timenow -----------------------------
* Description: Reports the current monotonic time.
*
* Parameters: void
* Returns: the current monotonic time.
* Other Info: none.
*
*)
procedure alarm_timenow; extern;
(* --------------------------- alarm_timedifference ------------------------
* Description: Returns difference between two times.
*
* Parameters: int t1 -- the earlier time
* int t2 -- the later time
* Returns: difference between t1 and t2.
* Other Info: Times are as in SWI OS_ReadMonotonicTime. Deals with wrap
* round of timer.
*
*)
function alarm_timedifference(t1, t2 : integer) : integer; extern;
(* ------------------------------ alarm_set --------------------------------
* Description: Set an alarm at the given time.
*
* Parameters: int at -- time at which alarm should occur
* alarm_handler proc -- function to be called at alarm time
* void *handle -- caller-supplied handle to be passed to
* function
* Returns: void.
* Other Info: The supplied function is called before passing the event
* on to any idle event claimer windows.
* "at" is in terms of the monotonic centi-second timer.
* The supplied function is passed the time at which it was
* called. If you have enabled idle events, then these are
* still returned to you; if not, RISC_OSlib uses idle events
* internally to implement alarm calls (using non-busy
* waiting via wimp_pollidle()).
*
*)
procedure alarm_set(at : integer;
proc : alarm_handler;
handle : pointer); extern;
(* ----------------------------- alarm_remove ------------------------------
* Description: Removes an alarm which was set for a given time with a
* given handle.
*
* Parameters: int at -- the time at which the alarm was to be made
* void *handle -- the given handle
* Returns: void.
* Other Info: If no such alarm exists this call has no effect.
*
*)
procedure alarm_remove(at : integer; handle : pointer); extern;
(* --------------------------- alarm_removeall -----------------------------
* Description: Removes all alarms which have a given handle.
*
* Parameters: void *handle -- the handle to search for.
* Returns: void.
* Other Info: none.
*
*)
procedure alarm_removeall(handle : pointer); extern;
(* ---------------------------- alarm_anypending ---------------------------
* Description: Returns whether an alarm is pending with a given handle
*
* Parameters: void *handle -- the handle.
* Returns: TRUE if there are any pending alarms for this handle.
* Other Info: none.
*
*)
function alarm_anypending(handle : pointer) : boolean; extern;
(* ----------------------------- alarm_next --------------------------------
* Description: Informs caller whether an alarm is pending and, if so, for
* when it is.
*
* Parameters: int *result -- time for which alarm is pending
* Returns: TRUE if an alarm is pending.
* Other Info: This should be used by polling loops (if you use the
* standard "while(TRUE) event_process();" loop then this is
* done for you). If a polling loop finds that an alarm is set
* it should use wimp_pollidle(with earliest time set to
* *result of alarm_next()) rather than wimp_poll to do its
* polling. If you handle idle events yourself, then your
* handler should use call_next to call the next alarm
* function upon receiving an idle event (ie. wimp_ENULL).
*
*)
function alarm_next(var result : integer) : boolean; extern;
(* ---------------------------- alarm_callnext -----------------------------
* Description: Calls the next alarm handler function.
*
* Parameters: void
* Returns: void.
* Other Info: This is done for you if you use event_process() to do your
* polling (or even if you sink down as far as using wimpt
* for polling).
*
*)
procedure alarm_callnext; extern;
#endif
(* end of alarm.h *)